<?php
namespace app\O_forum_back\controller;
use app\BaseController;
use think\facade\Db;
use think\facade\Filesystem;
use app\Request;
class Deal extends BaseController
{
	// O组 1903010241 展示帖子页面
    public function mesdeal($sid=0)
    {
    	// O组 1903010241 检查登录状态
    	$this -> checkB();
    	// 版块数据查询
		$sec=$this->showSec();
		$mtitle='%'.input('mtitle').'%';
		if($sid==0){
			$thisSec='全部';
			// O组 1903010241 加载全部帖子
			$re=Db::view('mes','mtitle,munick,mcreateat,mid,sbin,mbin')
				->order('mcreateat','desc')
				->where('mtitle','like',$mtitle)
                ->where('mbin',1)
				->select();
		}else{
			//  O组 1903010241 检查sid的合法性
			$thisSec=$this->checkSId(input('sid'));
			//  O组 1903010241 根据sid加载对应的帖子
			$re=Db::view('mes','mtitle,munick,mcreateat,mid,sbin,mbin')
				->order('mcreateat','desc')
				->where('mtitle','like',$mtitle)
				->where('msid',input('sid'))
                ->where('mbin',1)
				->select();
			} 	
            // O组 1903010241 输出数据
        return view('',['sec'=>$sec,'mes'=>$re,'sname'=>$thisSec,'sid'=>$sid]);
    }
    // O组 1903010241 展示帖子详细页面
    public function adetail()
    {
    	// O组 1903010241检查登录状态
    	$this -> checkB();
    	// 检查mid的合法性
		$this->checkMId(input('mid'));
		// O组 1903010241 数据查询
		$mesDetail=Db::view('mes','mtitle,munick,mcreateat,mcontent')
				->where('mid',input('mid'))
				->find();
		$mesReg=Db::view('res','runick,rcontent,rcreateat,rid,rbin,sbin,mbin')
					->order('rcreateat','desc')
					->where('rmid',input('mid'))
					->select();
		return view('',['mesDetail' => $mesDetail , 'mesReg' => $mesReg , 'mid'=>input('mid')]);
    }
    // O组 1903010241删除帖子
    public function mesdel()
    {
    	// O组 1903010241检查登录状态
    	$this -> checkB();
        // O组 1903010241 查询帖子回复
    	$resNum=Db::view('res','rid')
    			->where('rmid',input('mid'))
    			->select();
    	// O组 1903010241 判断是否有回复信息
    	if($resNum=='[]'){
    		// O组 1903010241 没有回复信息
    		$mesDel=Db::name('mes')
		    			->where('mid',input('mid'))
		    			->delete();
	    	if($mesDel==0){
	    		$this->error('帖子删除失败，请返回重试！',url('deal/mesdeal',['sid'=>input('sid')]));
	    		
    		}else{
    			$this->success('帖子删除成功！',url('deal/mesdeal',['sid'=>input('sid')]));
    		}
    	}else{
            //O组 1903010241 有回复信息，删除帖子相关回复
    		$resDel=Db::name('res')
	    			->where('rmid',input('mid'))
	    			->delete();
	    	if($resDel==0){
	    		$this->error('帖子删除失败，请返回重试！',url('deal/mesdeal',['sid'=>input('sid')]));
	    		
	    	}else{
	    		$mesDel=Db::name('mes')
		    			->where('mid',input('mid'))
		    			->delete();
		    	if($mesDel==0){
		    		$this->error('帖子删除失败，请返回重试！',url('deal/mesdeal',['sid'=>input('sid')]));
		    		
	    		}else{
	    			$this->success('帖子删除成功！',url('deal/mesdeal',['sid'=>input('sid')]));
	    		}
	    	}
    	}
    }
    // O组 1903010241，帖子进入回收站
    // 修改帖子的mbin值为0，及帖子所有的回复的mbin值0，及两个表的进入回收的时间
    public function binMesDel(){
        // 将回复的mbin修改为0
        $resDel=Db::name('res')
        ->where('rmid',input('mid'))
        ->update(['mbin' => '0','rdelat' => date('Y-m-d H:i:s')]);

        // 将帖子的mbin修改为0
        $mesDel=Db::name('mes')
        ->where('mid',input('mid'))
        ->update(['mbin' => '0','mdelat' => date('Y-m-d H:i:s')]);

        // 判断更新的结果
        if ($resDel >= 1 || $mesDel >= 1) {
            // 更新成功
            $this->success('帖子成功进入回收站！','deal/mesdeal');

        }else{
            // 更新失败
            $this->error('帖子进入回收站失败！','deal/mesdeal');
        }

    }
    // O组 1903010241删除回复信息
    public function resdel(){
    	// O组 1903010241检查登录状态
        $this -> checkB();
        // O组 1903010241 查询回复
    	$resDel=Db::name('res')
	    			->where('rid',input('rid'))
	    			->delete();
    	if($resDel==0){
    		$this->error('回复删除失败，请返回重试！',url('deal/adetail',['mid'=>input('mid')]));
    		
		}else{
			$this->success('回复删除成功！',url('deal/adetail',['mid'=>input('mid')]));
		}
    }
    // O组 1903010241，回复进入回收站
    public function binresDel(){
        // 将res的sbin修改为0
        $resDel=Db::name('res')
        ->where('rid',input('rid'))
        ->update(['rbin' => '0','rdelat' => date('Y-m-d H:i:s')]);
        // 判断更新的结果
        if ($resDel >= 1) {
            // 更新成功
            $this->success('回复成功进入回收站！',url('deal/adetail',['mid'=>input('mid')]));
        }else{
            // 更新失败
            $this->error('回复进入回收站失败！',url('deal/adetail',['mid'=>input('mid')]));
        }
    }
    // 版块进入回收站
    public function binSecDel(){
        // 先利用sid查询对应帖子的mid
        $mesCheck = Db::view('mes','mid')
                        ->where('msid',input('sid'))
                        ->column('mid');
        $a=0;
        foreach($mesCheck as $mCheck){
            // echo $mCheck;
            Db::name('res')
            // 将$mesCheck查询到的mid遍历，传递给res表进行还原的判断依据
            ->where('rmid',$mCheck)
            ->update(['sbin' => '0','rdelat' => date('Y-m-d H:i:s')]);
            $a+=1;    
        }
        // 将帖子的sbin修改为0
        $mesDel=Db::name('mes')
        ->where('msid',input('sid'))
        ->update(['sbin' => '0','mdelat' => date('Y-m-d H:i:s')]);

        // 将版块的sbin修改为0
        $secDel=Db::name('section')
        ->where('sid',input('sid'))
        ->update(['sbin' => '0','sdelat' => date('Y-m-d H:i:s')]);

        // 判断更新的结果
        if ($a >= 1 || $mesDel >= 1 || $secDel >= 1) {
            $this->success('版块成功进入回收站！','deal/secdeal');

        }else{
            $this->error('版块进入回收站失败！','deal/secdeal');
        }

    }
    // O组 1903010241 后台展示用户列表
   public function userdeal(){
     // O组 1903010241检查登录状态
        $this -> checkB();
        $udeal=Db::view('user','unick,utel,uemail,uimg,upower')
            ->where('unick','like','%'.input('uNick').'%')
            ->select();
    return view('',['udeal' => $udeal]);
    }
    // O组 1903010241 显示用户登录权限
    public function userpower(){
     // O组 1903010241检查登录状态
     $this -> checkB();
     $upower=Db::view('user','unick,upower')
       ->where('unick',input('uNick'))
       ->find();
     return view('',['upower' => $upower]);
    }
    // O组 1903010241 设置用户登陆权限
    public function userPowerModi(){
     // O组 1903010241 检查登录状态
     $this -> checkB();
     $dpo=Db::name('user')
       ->where('unick',input('unick'))
       ->update(['upower' => input('p')]);
    if($dpo){
     $this->success('修改成功','deal/userdeal');
    }
     else{
        $this -> error('修改失败！','deal/userdeal');
    }
    }
   
     // O组 1903010241 版块管理
    public function secDeal(){
        //  O组 1903010241 检查登录状态
        $this -> checkB();
        $sname='%'.input('sname').'%';
        //  O组 1903010241 版块信息查询
        $secRe=Db::view('section','sid,sname,sremark,sbin')
                ->order('sid')
                ->where('sname','like',$sname)
                ->select();
        return view('',['sec' => $secRe]);
    }
    // O组 1903010241 2类添加
    public function secAdd()
    {
        // 检查登录状态
        $this -> checkB();
        return view();
    }
    // O组 1903010241 1类
    public function secDoAdd()
    {
        //  O组 1903010241 检查登录状态
        $this -> checkB();
        $RegContent=Db::name('section')
                        ->insert(['sname' => input('secName') , 'sremark' => input('secRemark')]);
        //   O组 1903010241 提示跳转
        if ($RegContent==1) {
            $this->success('添加成功！','deal/secdeal');

        }else{
            $this->error('添加失败，请稍后再试','deal/secdeal');
        }
    }
    // O组 1903010241 2类 修改版块
    public function secInfo()
    {
        // 检查登录状态
        $this -> checkB();
        // 原版块名称
        $oldName = input('sname');
        // 原备注信息
        $oldRemark = input('sremark');
        return view('',['oldName' => $oldName , 'oldRemark' => $oldRemark]);
    }
    // O组 1903010241 1类
    public function secInfoModi()
    {
         //  O组 1903010241 检查登录状态
        $this -> checkB();
        //  O组 1903010241 更新版块名和版块备注数据
        $re = Db::name('section')
                ->where('sid',input('sid'))
                ->update(['sname' => input('newName'),'sremark' => input('newRemark')]);
        // O组 1903010241 更新验证
        if ($re == 1) {
            $this -> success('修改成功','deal/secdeal');
        }else{
            $this -> error('修改失败，请稍后再试！','deal/secdeal');
        }
    }
    
    // O组 1903010241 删除版块
    public function secDel()
    {
        // O组 1903010241 检查登录状态
        $this -> checkB();
        $re = Db::view('mes','mid')
                ->where('msid',input('sid'))
                ->select();
        if ($re == '[]') {
        // O组 1903010241 直接删除版块
                $secD = Db::view('section','sid')
                    ->where('sid',input('sid'))
                    ->delete();
                $this -> success('删除成功','deal/secdeal');
        }else{
         $length=count($re);
         for($i=0;$i<$length;$i++){
        // O组 1903010241 获取帖子编号
         		$mid=$re[$i]['mid'];
        // O组 1903010241 查看帖子是否有回复信息
			    	$resNum=Db::view('res','rid')
			    			->where('rmid',$mid)
			    			->select();
		// O组 1903010241 判断是否有回复信息
			    	if($resNum=='[]'){
		// O组 1903010241 没有回复信息,直接删除帖子
			    		$mesDel=Db::name('mes')
					    			->where('mid',$mid)
					    			->delete();
				    	if($mesDel==0){
				    		$this->error('删除失败，请返回重试！',url('deal/secdeal'));
				    		
			    		}
			    	}else{
		// O组 1903010241 有回复信息，删除帖子相关回复
			    		$resDel=Db::name('res')
				    			->where('rmid',$mid)
				    			->delete();
				    	if($resDel==0){
				    		$this->error('删除失败，请返回重试！',url('deal/secdeal'));
				    		
				    	}else{
				    		$mesDel=Db::name('mes')
					    			->where('mid',$mid)
					    			->delete();
					    	if($mesDel==0){
					    		$this->error('删除失败，请返回重试！',url('deal/secdeal'));
					    		
				    		}
				    	}
        		}
       	}
       	
        // 删除版块
       $secD = Db::name('section')
           ->where('sid',input('sid'))
           ->delete();
       $this -> success('删除成功','deal/secdeal');     
     	}
    }
}
